package br.com.documentos.model.entity;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity
public class Documento {

	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	
	@ManyToOne
	@JoinColumn
	private Usuario usuario;
	
	private Calendar dataCriacao;
	
	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn	
	private Arquivo arquivo;

	@ManyToOne
	@JoinColumn
	private TipoDocumentoUsuario tipoDocumento;
	
	@OneToMany(cascade=CascadeType.ALL,mappedBy="documento")
	private List<ValorParametroDocumento> parametros; 
	
	private String comentario;
	
	public List<ValorParametroDocumento> getParametros() {
		if( parametros == null ){
			parametros = new ArrayList<ValorParametroDocumento>();
		}
		return parametros;
	}

	public void addValorParametro(ValorParametroDocumento valorParametroDocumento) {
		getParametros().add(valorParametroDocumento);
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Calendar getDataCriacao() {
		return dataCriacao;
	}

	public void setDataCriacao(Calendar dataCriacao) {
		this.dataCriacao = dataCriacao;
	}

	public Arquivo getArquivo() {
		return arquivo;
	}

	public void setArquivo(Arquivo arquivo) {
		this.arquivo = arquivo;
	}

	public TipoDocumentoUsuario getTipoDocumento() {
		return tipoDocumento;
	}

	public void setTipoDocumento(TipoDocumentoUsuario tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}

	public void setParametros(List<ValorParametroDocumento> parametros) {
		this.parametros = parametros;
	}

	public String getComentario() {
		return comentario;
	}

	public void setComentario(String comentario) {
		this.comentario = comentario;
	}

	
}
